<?php
namespace Admin\Controller;
use Think\Controller;
use Think\Tree;
class MenuController extends Controller {

    // 添加操作
    public function add(){
        if(IS_POST){
            $Menu=D('Menu');
            if (!$Menu->create()){
                // 如果创建失败 表示验证没有通过 输出错误提示信息
                $this->error($Menu->getError());
           }else{
                // 验证通过 可以进行其他数据操作
                if($Menu->add()){
                    $this->success('添加成功');
                }else{
                    $this->error('添加失败');
                }
           }
        }else{
            // 获取tree
            $menu_list=M('menu')->where(['status'=>1,'show'=>1])->order('parent_id desc,sort')->select();
            $tree = new Tree($menu_list);
            $str = "<option value=\$id \$selected>\$spacer\$name</option>"; //生成的形式
            $categorys = $tree->get_tree(0,$str, $select_id = 0);
            $categorys='<option value="0">顶级菜单</option>'.$categorys;
            $category = "<select id='menu_tree' name='parent_id'>".$categorys."</select>";

            $this->assign('tree_select', $category);
            $this->display('add');
        }
    }


    public function edit(){
        if(IS_POST){
            $Menu=D('Menu');
            if (!$Menu->create()){
                // 如果创建失败 表示验证没有通过 输出错误提示信息
                $this->error($Menu->getError());
           }else{
                // 验证通过 可以进行其他数据操作
                if($Menu->save()){
                    $this->success('修改成功');
                }else{
                    $this->error('修改失败');
                }
           }
        }else{
            $id=I('get.id');
            $Menu=M('menu')->where(['id'=>$id])->find();
            
            // 获取tree
            $menu_list=M('menu')->where(['status'=>1,'show'=>1])->order('parent_id desc,sort')->select();
            $tree = new Tree($menu_list);
            $str = "<option value=\$id \$selected>\$spacer\$name</option>"; //生成的形式
            $categorys = $tree->get_tree(0,$str, $select_id = 0);
            $categorys='<option value="0">顶级菜单</option>'.$categorys;
            $category = "<select id='menu_tree' name='parent_id'>".$categorys."</select>";
            
            $this->assign('tree_select', $category);
            $this->assign('Menu',$Menu);
            $this->display('save');
        }
    }

    
    // 查询列表
    public function lists(){
        // 获取菜单列表
        // $menu_list=M('menu')->where('status=1')->order('parent_id desc,sort')->select();
        // $menu_arr=array();
        // foreach ($menu_list as $item){
        //     $menu_arr[$item['id']]=$item;
        // }
        // $id=I('get.id',0);
        // $tree = new Tree($menu_arr);
        // $list=$tree->get_child($id);
        $id=I('get.id',0);
        $list=M('menu')->where(['status'=>1,'parent_id'=>$id])->order('parent_id desc,sort')->select();
        $this->assign('list',$list);
        $this->display();
    }


    // 删除
    public function del(){
        if(IS_POST){
            $id=I('post.id',0);
            $menu=M('menu')->where(['id'=>$id])->find();
            if($menu){
                $sub_menu=M('menu')->where(['parent_id'=>$menu['id'],'status'=>1])->find();
                if($sub_menu){
                    $this->error('含有子菜单，不能删除');
                }else{
                    if(M('menu')->where(['id'=>$id])->save(['status'=>-1])){
                        $this->success('删除成功');
                    }else{
                        $this->error('删除失败');
                    }
                }
            }else{
                $this->error('没有该数据');
            }
        }else{
            $this->error('非法请求');
        }
        
    }
}